home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing;
-
- import java.awt.AWTEvent;
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.io.Serializable;
-
- public class KeyStroke implements Serializable {
- private static final Object pressedCharCacheKey = new StringBuffer("KeyStroke.pressedCharCacheKey");
- private static final Object releasedCharCacheKey = new StringBuffer("KeyStroke.releasedCharCacheKey");
- private static final Object pressedCodeCacheKey = new StringBuffer("KeyStroke.pressedCodeCacheKey");
- private static final Object releasedCodeCacheKey = new StringBuffer("KeyStroke.releasedCodeCacheKey");
- char keyChar;
- int keyCode;
- int modifiers;
- boolean onKeyRelease;
- static final int MIN_ASCII_CACHE_INDEX = 10;
- static final int MAX_ASCII_CACHE_INDEX = 127;
- static Class class$com$sun$java$swing$KeyStroke;
-
- private KeyStroke() {
- }
-
- static void cacheKeyCharKeyStroke(KeyStroke ks, boolean onKeyRelease) {
- if (ks.keyChar >= '\n' && ks.keyChar < 127) {
- Class var10000 = class$com$sun$java$swing$KeyStroke;
- if (var10000 == null) {
- try {
- var10000 = Class.forName("com.sun.java.swing.KeyStroke");
- } catch (ClassNotFoundException var7) {
- throw new NoClassDefFoundError(((Throwable)var7).getMessage());
- }
-
- class$com$sun$java$swing$KeyStroke = var10000;
- }
-
- synchronized(var10000){}
-
- try {
- if (onKeyRelease) {
- KeyStroke[] releasedKeyCharKeyStrokeCache = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
- if (releasedKeyCharKeyStrokeCache == null) {
- releasedKeyCharKeyStrokeCache = new KeyStroke[117];
- SwingUtilities.appContextPut(releasedCharCacheKey, releasedKeyCharKeyStrokeCache);
- }
-
- releasedKeyCharKeyStrokeCache[ks.keyChar - 10] = ks;
- } else {
- KeyStroke[] pressedKeyCharKeyStrokeCache = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
- if (pressedKeyCharKeyStrokeCache == null) {
- pressedKeyCharKeyStrokeCache = new KeyStroke[117];
- SwingUtilities.appContextPut(pressedCharCacheKey, pressedKeyCharKeyStrokeCache);
- }
-
- pressedKeyCharKeyStrokeCache[ks.keyChar - 10] = ks;
- }
- } catch (Throwable var6) {
- throw var6;
- }
- }
-
- }
-
- static void cacheKeyStroke(KeyStroke ks) {
- int subIndex = -1;
- if (ks.keyCode >= 10 && ks.keyCode < 127 && (subIndex = subIndexForModifier(ks.modifiers)) != -1) {
- Class var10000 = class$com$sun$java$swing$KeyStroke;
- if (var10000 == null) {
- try {
- var10000 = Class.forName("com.sun.java.swing.KeyStroke");
- } catch (ClassNotFoundException var8) {
- throw new NoClassDefFoundError(((Throwable)var8).getMessage());
- }
-
- class$com$sun$java$swing$KeyStroke = var10000;
- }
-
- synchronized(var10000){}
-
- try {
- KeyStroke[][] cache = null;
- if (ks.onKeyRelease) {
- KeyStroke[][] pressedKeyCodeKeyStrokeCache = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
- if (pressedKeyCodeKeyStrokeCache == null) {
- pressedKeyCodeKeyStrokeCache = new KeyStroke[4][117];
- SwingUtilities.appContextPut(pressedCodeCacheKey, pressedKeyCodeKeyStrokeCache);
- }
-
- cache = pressedKeyCodeKeyStrokeCache;
- } else {
- KeyStroke[][] releasedKeyCodeKeyStrokeCache = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
- if (releasedKeyCodeKeyStrokeCache == null) {
- releasedKeyCodeKeyStrokeCache = new KeyStroke[4][117];
- SwingUtilities.appContextPut(releasedCodeCacheKey, releasedKeyCodeKeyStrokeCache);
- }
-
- cache = releasedKeyCodeKeyStrokeCache;
- }
-
- cache[subIndex][ks.keyCode - 10] = ks;
- } catch (Throwable var7) {
- throw var7;
- }
- }
-
- }
-
- public boolean equals(Object anObject) {
- if (anObject instanceof KeyStroke) {
- KeyStroke ks = (KeyStroke)anObject;
- if (ks.keyChar == this.keyChar && ks.keyCode == this.keyCode && ks.onKeyRelease == this.onKeyRelease && ks.modifiers == this.modifiers) {
- return true;
- }
- }
-
- return false;
- }
-
- static KeyStroke getCachedKeyCharKeyStroke(char keyChar, boolean onKeyRelease) {
- KeyStroke result = null;
- if (keyChar >= '\n' && keyChar < 127) {
- Class var10000 = class$com$sun$java$swing$KeyStroke;
- if (var10000 == null) {
- try {
- var10000 = Class.forName("com.sun.java.swing.KeyStroke");
- } catch (ClassNotFoundException var7) {
- throw new NoClassDefFoundError(((Throwable)var7).getMessage());
- }
-
- class$com$sun$java$swing$KeyStroke = var10000;
- }
-
- synchronized(var10000){}
-
- try {
- KeyStroke[] cache;
- if (onKeyRelease) {
- cache = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
- } else {
- cache = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
- }
-
- if (cache != null) {
- result = cache[keyChar - 10];
- }
- } catch (Throwable var8) {
- throw var8;
- }
- }
-
- return result;
- }
-
- static KeyStroke getCachedKeyStroke(int keyCode, int modifiers, boolean onKeyRelease) {
- KeyStroke result = null;
- int subIndex;
- if (keyCode >= 10 && keyCode < 127 && (subIndex = subIndexForModifier(modifiers)) != -1) {
- Class var10000 = class$com$sun$java$swing$KeyStroke;
- if (var10000 == null) {
- try {
- var10000 = Class.forName("com.sun.java.swing.KeyStroke");
- } catch (ClassNotFoundException var9) {
- throw new NoClassDefFoundError(((Throwable)var9).getMessage());
- }
-
- class$com$sun$java$swing$KeyStroke = var10000;
- }
-
- synchronized(var10000){}
-
- try {
- KeyStroke[][] cache;
- if (onKeyRelease) {
- cache = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
- } else {
- cache = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
- }
-
- if (cache != null) {
- result = cache[subIndex][keyCode - 10];
- }
- } catch (Throwable var10) {
- throw var10;
- }
- }
-
- return result;
- }
-
- public char getKeyChar() {
- return this.keyChar;
- }
-
- public int getKeyCode() {
- return this.keyCode;
- }
-
- public static KeyStroke getKeyStroke(char keyChar) {
- return getKeyStroke(keyChar, false);
- }
-
- public static KeyStroke getKeyStroke(char keyChar, boolean onKeyRelease) {
- KeyStroke result = getCachedKeyCharKeyStroke(keyChar, onKeyRelease);
- if (result == null) {
- result = new KeyStroke();
- result.keyChar = keyChar;
- result.modifiers = 0;
- result.onKeyRelease = onKeyRelease;
- cacheKeyCharKeyStroke(result, onKeyRelease);
- }
-
- return result;
- }
-
- public static KeyStroke getKeyStroke(int keyCode, int modifiers) {
- return getKeyStroke(keyCode, modifiers, false);
- }
-
- public static KeyStroke getKeyStroke(int keyCode, int modifiers, boolean onKeyRelease) {
- KeyStroke result = getCachedKeyStroke(keyCode, modifiers, onKeyRelease);
- if (result == null) {
- result = new KeyStroke();
- result.keyCode = keyCode;
- result.modifiers = modifiers;
- result.onKeyRelease = onKeyRelease;
- cacheKeyStroke(result);
- }
-
- return result;
- }
-
- public static KeyStroke getKeyStroke(String representation) {
- return null;
- }
-
- public static KeyStroke getKeyStrokeForEvent(KeyEvent anEvent) {
- KeyStroke ks = null;
- switch (((AWTEvent)anEvent).getID()) {
- case 400:
- ks = getKeyStroke(anEvent.getKeyChar());
- break;
- case 401:
- ks = getKeyStroke(anEvent.getKeyCode(), ((InputEvent)anEvent).getModifiers(), false);
- break;
- case 402:
- ks = getKeyStroke(anEvent.getKeyCode(), ((InputEvent)anEvent).getModifiers(), true);
- }
-
- return ks;
- }
-
- public int getModifiers() {
- return this.modifiers;
- }
-
- private static String getStringRepresentation(char keyChar, int modifiers, boolean kr) {
- return "keyChar " + KeyEvent.getKeyModifiersText(modifiers) + keyChar + (kr ? "-R" : "-P");
- }
-
- private static String getStringRepresentation(int keyCode, int modifiers, boolean kr) {
- return "keyCode " + KeyEvent.getKeyModifiersText(modifiers) + KeyEvent.getKeyText(keyCode) + (kr ? "-R" : "-P");
- }
-
- public int hashCode() {
- return (this.keyChar + 1) * 2 * (this.keyCode + 1) * (this.modifiers + 1) + (this.onKeyRelease ? 1 : 2);
- }
-
- public boolean isOnKeyRelease() {
- return this.onKeyRelease;
- }
-
- static int subIndexForModifier(int modifiers) {
- if (modifiers == 0) {
- return 0;
- } else if (modifiers == 1) {
- return 1;
- } else if (modifiers == 2) {
- return 2;
- } else {
- return modifiers == 8 ? 3 : -1;
- }
- }
-
- public String toString() {
- return this.keyChar == 0 ? getStringRepresentation(this.keyCode, this.modifiers, this.onKeyRelease) : getStringRepresentation((char)this.keyChar, 0, this.onKeyRelease);
- }
- }
-